package vue;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import memory.Memory;
import memory.NombreImpairException;

@SuppressWarnings("serial")
public class VRootWindow extends JFrame {

	protected VMenubar menu; // Bandeau de control en bas de la fenetre
	protected JPanel content, bandeau; // Composants du menu principal
	protected VLevel game; // Composant d'une partie

	public VRootWindow() {
		/* Caracteristiques de base */
		setTitle("Accueil Memory");

		/* Mode plein ecran : TODO enlever les decorations */
		setSize(Toolkit.getDefaultToolkit().getScreenSize().width - 50, Toolkit
				.getDefaultToolkit().getScreenSize().height - 50); // 50 à
																	// tester
																	// sur xp

		setLocationRelativeTo(null);
		setResizable(false);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

		/* Construction de l'interface */
		setLayout(new BorderLayout());
		menu = new VMenubar(this);
		add(menu, BorderLayout.SOUTH);

		buildHome();

		setVisible(true);
	}

	public void buildHome() {

		/*
		 * Construit la page d'acceuil, comprends :
		 * -Menu de selection du niveau
		 * -Bandeau de titre
		 * -Invoquée une seule fois par le constructeur
		 */

		/*Menu*/	
		JPanel mainMenu = new JPanel();
		mainMenu.setBackground(Memory.BG_COLOR);
		
		mainMenu.setLayout(new GridLayout(2, 2, 20, 20));
		mainMenu.add(new VMenuItem(this, 1));
		mainMenu.add(new VMenuItem(this, 2));
		mainMenu.add(new VMenuItem(this, 3));
		mainMenu.add(new VMenuItem(this, 4));
		
		content = new JPanel(); //Imbrication dans un JPanel pour centrer le menu
		content.setBackground(Memory.BG_COLOR);
		
		content.setLayout(new GridBagLayout());
		content.add(mainMenu);

		/*Bandeau de titre*/
		JLabel title = new JLabel("Memory");
		title.setHorizontalAlignment(JLabel.CENTER);
		title.setVerticalAlignment(JLabel.CENTER);
		title.setPreferredSize(new Dimension(1024, 100));
		title.setFont(new Font(null, Font.BOLD, 50));
		title.setHorizontalTextPosition(JLabel.RIGHT);
		
		bandeau = new JPanel();
		bandeau.setBackground(Memory.BG_COLOR.darker());
		bandeau.add(title);
		
		/*Ajouts au conteneur principal*/
		add(bandeau, BorderLayout.NORTH);
		add(content, BorderLayout.CENTER);
	}

	public void showHome() {
		
		/**
		 * Affiche les composants de la page d'accueil 
		 */
		
		menu.setQuitter();
		content.setVisible(true);
		bandeau.setVisible(true);
	}

	public void buildLvl(int lvl, int theme) {
		/**
		*Construit le niveau lvl
		*/
		
		menu.setRetour();
		content.setVisible(false);
		bandeau.setVisible(false);
		
		try {
			switch (lvl) {
			case 1:
				game = new VLevel(this, 2, 2, theme);
				add(game, BorderLayout.CENTER);
				break;

			case 2:
				game = new VLevel(this, 2, 3, theme);
				add(game, BorderLayout.CENTER);
				break;

			case 3:
				game = new VLevel(this, 2, 4, theme);
				add(game, BorderLayout.CENTER);
				break;

			case 4:
				game = new VLevel(this, 3, 4, theme);
				add(game, BorderLayout.CENTER);
				break;

			default:
				break;
			}
		} catch (NombreImpairException e) {}
	}

	public boolean isInGame() {
		return !content.isVisible();
	}

	public VLevel getGame() {
		return game;
	}

	public void reBuildLvl(int lvl, int theme) {
		game.setVisible(false);
		buildLvl(lvl, theme);
	}

}
